package com.example.tencentTrain;

/**
 * 给你一个整数 n，请你判断该整数是否是 2 的幂次方。如果是，返回 true ；否则，返回 false 。
 *  如果存在一个整数 x 使得 n == 2ˣ ，则认为 n 是 2 的幂次方。
 *
 *  示例 1：
 * 输入：n = 1
 * 输出：true
 * 解释：2⁰ = 1
 *
 *  示例 2：
 * 输入：n = 16
 * 输出：true
 * 解释：2⁴ = 16
 *
 *  示例 3：
 * 输入：n = 3
 * 输出：false
 */
public class Leetcode231_IsPowerOfTwo {
    public static void main(String[] args) {

//        System.out.println(1 << 0);
        System.out.println(new Solution().isPowerOfTwo(1));
    }

    static class Solution {
        private boolean isPowerOfTwo2(int n) {
            return n > 0 && (n & (n - 1)) == 0;
        }

        private boolean isPowerOfTwo1(int n) {
            if (n <= 0) return false;
            for (int i = 0; i < 32; i++) {
                if (((1 << i) & n) == n) return true;
            }

            return false;
        }

        public boolean isPowerOfTwo(int n) {
            return isPowerOfTwo2(n);
        }
    }
}
